/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package czStvDpds.input;

import org.lwjgl.input.Mouse;

/**
 * Reprezentuje informace o akcích myši
 *
 * @author divad
 */
public final class LWJGLMouseEvent {

    private int button;
    private boolean buttonState;
    private int dX, dY, x, y;
    private int deltaWheel;
    private long nanos;

    /**
     * Vytvoří novoý event myši
     *
     * @param button kód tlačítka myši
     * @param buttonState stav tlačítka myši true - záčknuto, false - puštěno
     * @param dX horizontální vzdálenost kurzoru v pixlech od posledního eventu
     * @param dY vertikální vzdálenost kurzoru v pixlech od posledního eventu
     * @param x absolutní horizontální vzdálenost kurzoru v pixlech na obrazovce
     * @param y absolutní vertikální vzdálenost kurzoru v pixlech na obrazovce
     * @param deltaWheel počet kroků udělaných kolečkem myši od posledního
     * eventu
     * @param nanos
     */
    public LWJGLMouseEvent(int button, boolean buttonState, int dX, int dY, int x, int y, int deltaWheel, long nanos) {
        this.button = button;
        this.buttonState = buttonState;
        this.dX = dX;
        this.dY = dY;
        this.x = x;
        this.y = y;
        this.deltaWheel = deltaWheel;
        this.nanos = nanos;
    }

    /**
     * Vrátí kód tlačítka myši
     *
     * @return
     */
    public int getButton() {
        return button;
    }

    /**
     * Vrátí stav tlačítka
     *
     * @return
     */
    public boolean getButtonState() {
        return buttonState;
    }

    /**
     * Vrátí horizontální vzdálenost kurzoru v pixlech od posledního eventu
     *
     * @return
     */
    public int getdX() {
        return dX;
    }

    /**
     * Vrátí vertikální vzdálenost kurzoru v pixlech od posledního eventu
     *
     * @return
     */
    public int getdY() {
        return dY;
    }

    /**
     * Vrátí počet kroků udělaných kolečkem myši od posledního eventu
     *
     * @return
     */
    public int getDeltaWheel() {
        return deltaWheel;
    }

    public long getNanos() {
        return nanos;
    }

    /**
     * Vrátí absolutní horizontální vzdálenost kurzoru v pixlech na obrazovce
     *
     * @return
     */
    public int getX() {
        return x;
    }

    /**
     * Vrátí absolutní vertikální vzdálenost kurzoru v pixlech na obrazovce
     *
     * @return
     */
    public int getY() {
        return y;
    }

    /**
     * Vrátí jméno tlačítka, podle jeho kódu
     *
     * @param button
     * @return
     */
    public static String getButtonName(int button) {
        return Mouse.getButtonName(button);
    }

    /**
     * Vrátí kód tlačítka podle jeho jména
     *
     * @param name
     * @return
     */
    public static int getButton(String name) {
        return Mouse.getButtonIndex(name);
    }
}
